package stackAndQueue;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * todo
 *
 * @author zhengshan
 * @Date 2022/12/28 15:29
 */
public class MyStack {

    private int[] arr;

    /**
     * 记录栈中元素个数
     */
    private int size;

    /**
     * 调用无参构造，初始化长度
     */
    public MyStack(){
        this(10);
    }

    public MyStack(int maxSize){
        this.arr = new int[maxSize];
    }

    //判断是否为空栈
    public boolean isEmpty() {
        return size == 0;
    }

    public int length(){
        return size;
    }

    //入栈
    public int push(int value){
        if(size == arr.length){
            //栈满，需要扩容
            int[] valueArr;
            valueArr = Arrays.copyOf(arr, 2*arr.length);
            arr = valueArr;
        }
        //将元素添加到size位置
        arr[size] = value;
        size++;
        return value;
    }

    //出栈
    public Object pop(){
        if(size != 0){
            return arr[--size];
        }
        return null;
    }

    //获取栈顶元素
    public Object peek(){
        if(size != 0){
            return arr[size -1];
        }
        return null;
    }


}
